'''
Created on 21 nov. 2014

@author: Damien Torond et Geoffrey Sentost
Module Placement
'''
from datetime import datetime

'''
import du module datetime.
'''

# on instancie ici que les placements en cours, les autres sont dans la bdd
class Placement:
    
    '''
    La classe Placement permet de modeliser le placement d'une voiture a une place donnee.
    '''
    
    def __init__(self, place, dateEntree = None, typePaiement = None):
        '''
        Constructeur de la classe Placement.
        Attributs:
            - place de la classe Place.
            - dateEntree de type dateEntree, peut prendre la date d'aujourd'hui.
            - typePaiement de type int.
            - dateSortie qui est egal a null' de type date.
            - estEnCours qui est prive et de type booleen, modelise si la place est occupe.
            ou non.
        '''
        self.place = place
        
        if dateEntree and typePaiement :
            self.dateEntree = dateEntree
            self.typePaiement = typePaiement
        else :        
            self.dateEntree = datetime.today()
            self.typePaiement = 0
            print("Nouveau placement enregistré, DATE : '" + str(self.dateEntree) + "'")
            
        self.dateSortie = "null"     
        self.__estEnCours = True
            
    
    def partirPlace(self):
        '''
        Methode : permet de partir de de la place grace a la date de sortie, donc le estEnCours revient a False
        le typePaiement revient a 0.
        '''
        self.dateSortie = datetime.today()
        self.__estEnCours = False
        self.typePaiement = 0
    
        
    def getPlace(self):
        '''
        Methode : accesseur de l'attribut place qui retourne celui-ci.
        '''
        return self.place

    
    def getDateEntree(self):
        '''
        Methode : accesseur de l'attribut dateEntree qui retourne celui-ci.
        '''
        return self.dateEntree
    
    
    def getDateSortie(self):     
        '''
        Methode : accesseur de l'attribut dateSortie qui retourne celui-ci.
        '''
        return self.dateSortie
    
    
    def getTypePaiement(self):
        '''
        Methode : accesseur de l'attribut typePaiement qui retourne celui-ci.
        '''
        return self.typePaiement

   
    def setTypePaiement(self, type):
        '''
        Methode : modificateur de l'attribut paiement qui modifie celui-ci.
        '''
        self.typePaiement = type
        
   